package cn.cdu.medical.service;

import java.util.List;
import java.util.Map;

/**
 * 医生工作台服务接口
 */
public interface IDoctorWorkbenchService {
    /**
     * 获取医生信息
     * @param userId 用户ID
     * @return 医生信息
     */
    Map<String, Object> getDoctorInfo(String userId);

    /**
     * 获取待诊患者列表
     * @param userId 用户ID
     * @return 患者列表
     */
    List<Map<String, Object>> getWaitingPatients(String userId);

    /**
     * 获取诊疗中患者列表
     * @param userId 用户ID
     * @return 患者列表
     */
    List<Map<String, Object>> getInProgressPatients(String userId);

    /**
     * 获取已诊患者列表
     * @param userId 用户ID
     * @return 患者列表
     */
    List<Map<String, Object>> getCompletedPatients(String userId);

    /**
     * 更新患者诊疗状态
     * @param patientId 患者ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updatePatientStatus(String patientId, String status);

    /**
     * 获取患者历史就诊记录
     * @param patientId 患者ID
     * @return 就诊记录列表
     */
    List<Map<String, Object>> getPatientHistory(String patientId);

    /**
     * 分页查询患者列表
     * @param userId 用户ID
     * @param pageNumber 页码
     * @param pageSize 每页数量
     * @param searchKey 搜索关键词
     * @return 包含分页信息和患者列表的Map
     */
    Map<String, Object> getPatientList(String userId, Integer pageNumber, Integer pageSize, String searchKey);

    /**
     * 根据状态获取患者列表
     * @param userId 用户ID
     * @param status 状态码（0：待诊，1：诊疗中，2：已诊）
     * @return 患者列表
     */
    List<Map<String, Object>> getPatientsByStatus(String userId, Integer status);

    /**
     * 获取医生当日排班信息
     * @param userId 用户ID
     * @return 排班信息列表
     */
    List<Map<String, Object>> getTodaySchedule(String userId);

    /**
     * 获取医生指定日期范围内的排班信息
     * @param userId 用户ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 排班信息列表
     */
    List<Map<String, Object>> getDoctorSchedules(String userId, String startDate, String endDate);
} 